home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
076-100
/
disk_098
/
thai
/
printer.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
2KB
|
102 lines
/*
* Printer interface functions
*
*
* extern LONG OpenPrinter ();
* Returns TRUE if succeeds, FALSE if fails.
*
* extern void ClosePrinter ();
* The printer must have been opened.
*
* extern LONG PrintString ( char * string );
* Print the null terminated string on the printer.
* Returns the status of DoIO()
*
* extern LONG DumpScreen ( struct Screen * screen );
* Dumps an intuition screen on the printer in black and white.
* Returns the status of DoIO()
*
*/
#include <exec/types.h>
#include <intuition/intuition.h>
#include <devices/printer.h>
#include "printer.h"
extern struct MsgPort * CreatePort ();
extern struct IORequest * CreateExtIO ();
extern LONG OpenDevice ();
extern LONG DoIO ();
union printerIO {
struct IOStdReq ios;
struct IODRPReq iodrp;
struct IOPrtCmdReq iopc;
};
static union printerIO * prt_request;
static struct MsgPort * prt_port;
LONG
OpenPrinter ()
{
prt_port = CreatePort ( (char *)NULL , (LONG)0 );
if ( prt_port != NULL ) {
prt_request = (union printerIO *)
CreateExtIO ( prt_port , (LONG)sizeof ( union printerIO ) );
if ( prt_request != NULL ) {
if ( OpenDevice ( "printer.device" , (LONG)0 , prt_request , (LONG)0 ) == 0 ) {
return ( TRUE );
}
DeleteExtIO ( prt_request , (LONG)sizeof ( union printerIO ) );
}
DeletePort ( prt_port );
}
return ( FALSE );
}
void
ClosePrinter ()
{
CloseDevice ( prt_request );
DeleteExtIO ( prt_request , (LONG) sizeof ( union printerIO ) );
DeletePort ( prt_port );
}
LONG
PrintString ( str )
char *str;
{
prt_request->ios.io_Command = CMD_WRITE;
prt_request->ios.io_Length = -1;
prt_request->ios.io_Data = (APTR) str;
return ( DoIO ( prt_request ) );
}
LONG
DumpScreen ( screen )
struct Screen *screen;
{
prt_request->iodrp.io_Command = PRD_DUMPRPORT;
prt_request->iodrp.io_RastPort = &screen->RastPort;
prt_request->iodrp.io_ColorMap = screen->ViewPort.ColorMap;
prt_request->iodrp.io_Modes = screen->ViewPort.Modes;
prt_request->iodrp.io_SrcX = 0;
prt_request->iodrp.io_SrcY = 0;
prt_request->iodrp.io_SrcWidth = screen->Width;
prt_request->iodrp.io_SrcHeight = screen->Height;
prt_request->iodrp.io_DestCols = screen->Width;
prt_request->iodrp.io_DestRows = screen->Height;
prt_request->iodrp.io_Special = 0;
return ( DoIO ( prt_request ) );
}